home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri K-CD 2002 #1 / K-CD_2002-01.iso / Delphi / INSTALL / program files / Borland / Delphi6 / Doc / FileCtrl.int < prev    next >
Encoding:
Text File  |  2001-05-22  |  9.4 KB  |  331 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {                                                       }
  6. {  Copyright (c) 1995-2001 Borland Software Corporation }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit FileCtrl platform;
  11.  
  12. {$R-,T-,H+,X+}
  13.  
  14. interface
  15.  
  16. uses Windows, Messages, SysUtils, Classes, Controls, Graphics, Forms,
  17.   Menus, StdCtrls, Buttons;
  18.  
  19. type
  20.   TFileAttr = (ftReadOnly, ftHidden, ftSystem, ftVolumeID, ftDirectory,
  21.     ftArchive, ftNormal);
  22.   TFileType = set of TFileAttr;
  23.  
  24.   TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM,
  25.     dtRAM);
  26.  
  27.   TDirectoryListBox = class;
  28.   TFilterComboBox = class;
  29.   TDriveComboBox = class;
  30.  
  31. { TFileListBox }
  32.  
  33.   TFileListBox = class(TCustomListBox)
  34.   protected
  35.     FDirectory: string;
  36.     FMask: string;
  37.     FFileType: TFileType;
  38.     FFileEdit: TEdit;
  39.     FDirList: TDirectoryListBox;
  40.     FFilterCombo: TFilterComboBox;
  41.     ExeBMP, DirBMP, UnknownBMP: TBitmap;
  42.     FOnChange: TNotifyEvent;
  43.     FLastSel: Integer;
  44.     FShowGlyphs: Boolean;
  45.     procedure CreateWnd; override;
  46.     procedure ReadBitmaps; virtual;
  47.     procedure Click; override;
  48.     procedure Change; virtual;
  49.     procedure ReadFileNames; virtual;
  50.     procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);  override;
  51.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  52.     function GetFilePath: string; virtual;
  53.   public
  54.     constructor Create(AOwner: TComponent); override;
  55.     destructor Destroy; override;
  56.     procedure Update; reintroduce;
  57.     procedure ApplyFilePath (const EditText: string); virtual;
  58.     property Drive: char;
  59.     property Directory: string;
  60.     property FileName: string;
  61.   published
  62.     property Align;
  63.     property Anchors;
  64.     property AutoComplete;
  65.     property BevelEdges;
  66.     property BevelInner;
  67.     property BevelKind;
  68.     property BevelOuter;
  69.     property Color;
  70.     property Constraints;
  71.     property Ctl3D;
  72.     property DragCursor;
  73.     property DragMode;
  74.     property Enabled;
  75.     property ExtendedSelect;
  76.     property FileEdit: TEdit;
  77.     property FileType: TFileType default [ftNormal];
  78.     property Font;
  79.     property ImeMode;
  80.     property ImeName;
  81.     property IntegralHeight;
  82.     property ItemHeight;
  83.     property Mask: string;
  84.     property MultiSelect;
  85.     property ParentColor;
  86.     property ParentCtl3D;
  87.     property ParentFont;
  88.     property ParentShowHint;
  89.     property PopupMenu;
  90.     property ShowGlyphs: Boolean default False;
  91.     property ShowHint;
  92.     property TabOrder;
  93.     property TabStop;
  94.     property Visible;
  95.     property OnChange: TNotifyEvent;
  96.     property OnClick;
  97.     property OnContextPopup;
  98.     property OnDblClick;
  99.     property OnDragDrop;
  100.     property OnDragOver;
  101.     property OnEndDrag;
  102.     property OnEnter;
  103.     property OnExit;
  104.     property OnKeyDown;
  105.     property OnKeyPress;
  106.     property OnKeyUp;
  107.     property OnMouseDown;
  108.     property OnMouseMove;
  109.     property OnMouseUp;
  110.     property OnStartDrag;
  111.   end;
  112.  
  113. { TDirectoryListBox }
  114.  
  115.   TDirectoryListBox = class(TCustomListBox)
  116.   protected
  117.     ClosedBMP, OpenedBMP, CurrentBMP: TBitmap;
  118.     FDirectory: string;
  119.     FOnChange: TNotifyEvent;
  120.     procedure Change; virtual;
  121.     procedure DblClick; override;
  122.     procedure ReadBitmaps; virtual;
  123.     procedure CreateWnd; override;
  124.     procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
  125.     function  ReadDirectoryNames(const ParentDirectory: string;
  126.       DirectoryList: TStringList): Integer;
  127.     procedure BuildList; virtual;
  128.     procedure KeyPress(var Key: Char); override;
  129.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  130.   public
  131.     constructor Create(AOwner: TComponent); override;
  132.     destructor Destroy; override;
  133.     function  DisplayCase(const S: String): String;
  134.     function  FileCompareText(const A, B: String): Integer;
  135.     function GetItemPath(Index: Integer): string;
  136.     procedure OpenCurrent;
  137.     procedure Update; reintroduce;
  138.     property Drive: Char;
  139.     property Directory: string;
  140.     property PreserveCase: Boolean;
  141.     property CaseSensitive: Boolean;
  142.   published
  143.     property Align;
  144.     property Anchors;
  145.     property AutoComplete;
  146.     property BevelEdges;
  147.     property BevelInner;
  148.     property BevelKind;
  149.     property BevelOuter;
  150.     property Color;
  151.     property Columns;
  152.     property Constraints;
  153.     property Ctl3D;
  154.     property DirLabel: TLabel;
  155.     property DragCursor;
  156.     property DragMode;
  157.     property Enabled;
  158.     property FileList: TFileListBox;
  159.     property Font;
  160.     property ImeMode;
  161.     property ImeName;
  162.     property IntegralHeight;
  163.     property ItemHeight;
  164.     property ParentColor;
  165.     property ParentCtl3D;
  166.     property ParentFont;
  167.     property ParentShowHint;
  168.     property PopupMenu;
  169.     property ShowHint;
  170.     property TabOrder;
  171.     property TabStop;
  172.     property Visible;
  173.     property OnChange: TNotifyEvent;
  174.     property OnClick;
  175.     property OnContextPopup;
  176.     property OnDblClick;
  177.     property OnDragDrop;
  178.     property OnDragOver;
  179.     property OnEndDrag;
  180.     property OnEnter;
  181.     property OnExit;
  182.     property OnKeyDown;
  183.     property OnKeyPress;
  184.     property OnKeyUp;
  185.     property OnMouseDown;
  186.     property OnMouseMove;
  187.     property OnMouseUp;
  188.     property OnStartDrag;
  189.   end;
  190.  
  191. { TDriveComboBox }
  192.  
  193.   TTextCase = (tcLowerCase, tcUpperCase);
  194.  
  195.   TDriveComboBox = class(TCustomComboBox)
  196.   protected
  197.     FloppyBMP, FixedBMP, NetworkBMP, CDROMBMP, RAMBMP: TBitmap;
  198.     procedure CreateWnd; override;
  199.     procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
  200.     procedure Click; override;
  201.     procedure BuildList; virtual;
  202.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  203.   public
  204.     constructor Create(AOwner: TComponent); override;
  205.     destructor Destroy; override;
  206.     property Text;
  207.     property Drive: Char;
  208.   published
  209.     property Anchors;
  210.     property AutoComplete;
  211.     property AutoDropDown;
  212.     property BevelEdges;
  213.     property BevelInner;
  214.     property BevelKind;
  215.     property BevelOuter;
  216.     property Color;
  217.     property Constraints;
  218.     property Ctl3D;
  219.     property DirList: TDirectoryListBox;
  220.     property DragMode;
  221.     property DragCursor;
  222.     property Enabled;
  223.     property Font;
  224.     property ImeMode;
  225.     property ImeName;
  226.     property ParentColor;
  227.     property ParentCtl3D;
  228.     property ParentFont;
  229.     property ParentShowHint;
  230.     property PopupMenu;
  231.     property ShowHint;
  232.     property TabOrder;
  233.     property TabStop;
  234.     property TextCase: TTextCase default tcLowerCase;
  235.     property Visible;
  236.     property OnChange;
  237.     property OnClick;
  238.     property OnContextPopup;
  239.     property OnDblClick;
  240.     property OnDragDrop;
  241.     property OnDragOver;
  242.     property OnDropDown;
  243.     property OnEndDrag;
  244.     property OnEnter;
  245.     property OnExit;
  246.     property OnKeyDown;
  247.     property OnKeyPress;
  248.     property OnKeyUp;
  249.     property OnStartDrag;
  250.   end;
  251.  
  252. { TFilterComboBox }
  253.  
  254.   TFilterComboBox = class(TCustomComboBox)
  255.   protected
  256.     procedure Change; override;
  257.     procedure CreateWnd; override;
  258.     procedure Click; override;
  259.     procedure BuildList;
  260.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  261.   public
  262.     constructor Create(AOwner: TComponent); override;
  263.     destructor Destroy; override;
  264.     property Mask: string;
  265.     property Text;
  266.   published
  267.     property Anchors;
  268.     property AutoComplete;
  269.     property AutoDropDown;    
  270.     property BevelEdges;
  271.     property BevelInner;
  272.     property BevelKind;
  273.     property BevelOuter;
  274.     property Color;
  275.     property Constraints;
  276.     property Ctl3D;
  277.     property DragMode;
  278.     property DragCursor;
  279.     property Enabled;
  280.     property FileList: TFileListBox;
  281.     property Filter: string;
  282.     property Font;
  283.     property ImeName;
  284.     property ImeMode;
  285.     property ParentColor;
  286.     property ParentCtl3D;
  287.     property ParentFont;
  288.     property ParentShowHint;
  289.     property PopupMenu;
  290.     property ShowHint;
  291.     property TabOrder;
  292.     property TabStop;
  293.     property Visible;
  294.     property OnChange;
  295.     property OnClick;
  296.     property OnContextPopup;
  297.     property OnDblClick;
  298.     property OnDragDrop;
  299.     property OnDragOver;
  300.     property OnDropDown;
  301.     property OnEndDrag;
  302.     property OnEnter;
  303.     property OnExit;
  304.     property OnKeyDown;
  305.     property OnKeyPress;
  306.     property OnKeyUp;
  307.     property OnStartDrag;
  308.   end;
  309.  
  310. procedure ProcessPath (const EditText: string; var Drive: Char;
  311.   var DirPart: string; var FilePart: string);
  312.  
  313. function MinimizeName(const Filename: TFileName; Canvas: TCanvas;
  314.   MaxLen: Integer): TFileName;
  315.  
  316. const
  317.   WNTYPE_DRIVE = 1;  { from WINNET.H, WFW 3.1 SDK }
  318.  
  319. type
  320.   TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
  321.   TSelectDirOpts = set of TSelectDirOpt;
  322.  
  323. function SelectDirectory(var Directory: string;
  324.   Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
  325. function SelectDirectory(const Caption: string; const Root: WideString;
  326.   var Directory: string): Boolean; overload;
  327. function DirectoryExists(const Name: string): Boolean;
  328. function ForceDirectories(const Dir: string): Boolean;
  329.  
  330. implementation
  331.